/**
 * 给定A和B，A是x-1的数位和，B是x的位数，求最小的x
 * 考虑数位和等于A且要最小，必然是形如 100..0L99...9
 * 当然还要考虑一些特殊情况，然后进行安排即可
 */
#include <bits/stdc++.h>
using namespace std;

#include <bits/extc++.h>
using namespace __gnu_pbds;

using Real = long double;
using llt = long long;
using pii = pair<int, int>;
using vi = vector<int>;
using vvi = vector<vi>;

int A, B;

bool check(llt n){
    int k = 0;
    auto t = n;
    while(t){
        t /= 10; ++k;
    }
    if(k != B) return false;
    n -= 1;
    int s = 0;
    while(n){
        s += n % 10; n /= 10;
    }
    return s == A;
}

llt proc(){
    int c = A / 9;
    int left = A % 9;
    if(c > B) assert(0);
    if(c + 1 == B and 0 == left){
        llt ans = 1;
        for(int i=1;i<B;++i) ans = ans * 10;
        return ans;
    }

    if(left){
        if(c + 1 == B){
            llt ans = left;
            for(int i=1;i<B;++i) ans = ans * 10 + 9;
            return ans + 1;
        }
        llt ans = 1;
        for(int i=1;i<B-c-1;++i)ans = ans * 10;
        ans = ans * 10 + left - 1;
        for(int i=0;i<c;++i)ans = ans * 10 + 9;
        return ans + 1;
    }

    llt ans = 1;
    for(int i=0;i<B-1-c;++i)ans = ans * 10;
    ans = ans * 10 + 8;
    for(int i=1;i<c;++i) ans = ans * 10 + 9;
    return ans + 1;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);
    int nofkase = 1;
    cin >> nofkase;
    while(nofkase--){
        cin >> A >> B;
        cout << proc() << endl;
    }
    return 0;
}